package com.example.UI.list;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import com.example.UI.CourseActivity;
import com.example.UI.entity.Course;
import com.example.ui.R;

import java.util.List;

/**
 * CourseArrayAdapter 类继承自 ArrayAdapter，用于自定义 ListView 中课程列表项的布局。
 */
public class CourseArrayAdapter extends ArrayAdapter<Course> {
    /**
     * CourseArrayAdapter 的构造函数，接收一个 CourseActivity 上下文和课程列表。
     *
     * @param context        CourseActivity 的上下文，用作获取系统资源等。
     * @param courses        课程列表，包含所有要显示的课程对象。
     */
    public CourseArrayAdapter(CourseActivity context, List<Course> courses) {
        // 调用 ArrayAdapter 的构造函数，传入上下文和数据源
        super(context, 0, courses);
    }

    /**
     * getView 方法用于为 ListView 的每一项创建或重用视图。
     * 此方法被调用以获取 ListView 每一项的视图。
     *
     * @param position      当前项在适配器中的位置。
     * @param convertView   如果 ListView 正在重用项，这是之前项的视图。
     * @param parent        ListView 的根布局。
     * @return              配置好的项的视图。
     */
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // 根据位置获取当前项的数据对象
        Course course = getItem(position);

        // 如果 convertView 为 null，则需要通过 inflate 方法创建一个新的视图
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_course, parent, false);
        }

        // 初始化 TextView 用于显示课程信息
        TextView tvCourseName = convertView.findViewById(R.id.tvCourseName);
        TextView tvCourseId = convertView.findViewById(R.id.tvCourseId);
        TextView tvCourseTeacher = convertView.findViewById(R.id.tvCourseTeacher);
        TextView tvCourseClass = convertView.findViewById(R.id.tvCourseClass);
        TextView tvCourseTime = convertView.findViewById(R.id.tvCourseTime);

        // 将课程数据绑定到相应的 TextView
        tvCourseName.setText("课程名称：" + course.getCourseName());
        tvCourseId.setText("课程编号：" + course.getCourseId());
        tvCourseTeacher.setText("任课教师：" + course.getCourseTeacher());
        tvCourseClass.setText("学习班级：" + course.getCourseClass());
        tvCourseTime.setText("课程学习：" + course.getCourseTime());

        // 返回配置好的视图，该视图会被添加到 ListView 中
        return convertView;
    }
}